

// mysql 数据库的增删改查
// select
// update   set
// insert   into
// delete   from


// mongodb  数据库的增删改查
// find     findOne                 // 查询
// update   updateOne   updateMany      // 修改
// insert   insertOne   insertMany  save    新增
// delete   deleteOne   remove      删除    

// use music    创建/切换数据库
// show

// show collections         //查看多数张表


// insert   insertOne   insertMany  save    新增
//  表名  
db.users.insert({ username: "lala", age: 35 })
db.users.insert({ username: "yuyu", age: 35 })
db.users.save({ username: "xiaohan", age: 18, pass: "3131313" })
// 插入多条 也可以插入一条
db.users.insert([{ username: "xiaoxiao", age: 27, pass: "78451" }, { username: "lili", age: 25, pass: "78451" }])

db.users.insertOne({ username: '大雷', age: 33 })

// 常用
db.users.insertMany([
    { username: '老王', age: 28 },
    { username: '小小', age: 38 }
])

db.users.count()        // 查看有多少条数据

db.users.save([
    {
        username: "太阳系",
        age: 1000
    },
    {
        username: "银河系",
        age: 1000
    }
])



// update   updateOne   updateMany      // 修改

// 条件   字段
// db.users.updateMany(query, filed)

db.users.updateMany({

}, {
    $set: {
        pass: "123456"
    }
})

// 常用
db.users.updateMany({

}, {
    $set: {
        time: new Date
    }
})

db.users.updateMany({
    username: "xiaoxiao"
}, {
    $set: {
        pass: "000888"
    }
})

// 只能修改一个
db.users.updateOne({
    username: "小小"
}, {
    $set: {
        word: "daydayup"
    },
    $inc: {
        age: -10
    }
})

// 不写条件 默认修改第一个
db.users.updateOne({

}, {
    $inc: {
        age: 20
    },
    $set: {
        word: "学会Node"
    }
})

db.users.updateOne({
    username: "小小"
}, {
    $inc: {
        age: -18
    },
    $set: {
        word: "一定精通Node"
    }
})

// 默认false
// true  表示插入  找不到就插入  找到就修改
db.users.update({

}, {
    $set: {
        word: "hello world"
    }
}, true)

// 第二个参数 true 修改所有的满足条件的数据 updateMany
db.users.update({

}, {
    $set: {
        word: "hello world"
    }
}, false, true)



// remove 常用
// deleteMany   deleteOne   remove      删除  

// db.users.remove(query)       query条件

db.users.deleteOne({
    username: "lala"
})

db.users.deleteOne({
    username: "lili"
})

// 不写条件 全删
db.users.deleteMany({
    username: "小小"
})

// 不写条件 全删
db.users.remove({
    username: "xiaohan"
})


// find     findOne                 // 查询

// db.users.find(query,field)
db.users.find()

db.users.find({}, {
    username: 1                 // 只看用户名   1表示显示  0表示隐藏
})

db.users.find({}, {
    username: 1, age: 1, _id: 0
})


// 查所有
db.users.find({
    username: "yuyu"
})

// 查询一条
db.users.findOne({
    username: "老王"
})

// 去重 查询
db.users.findOne({
    username: "yuyu",
    age: 35
}, {
    username: 1, age: 1, wore: 1
})

// 去重 查询        
db.users.distinct("username")


// $gt  great then >
// $gte great then equal >=
// $lt less then <
// $lte less equal <=

db.users.find({
    age: {
        $gt: 30,
        $lte: 60
    }
}, {
    username: 1,
    age: 1,
    _id: 0
})

db.users.find({
    age: {
        $lte: 30
    }
}, {
    username: 1,
    age: 1,
    _id: 0
}).sort({ age: -1 })    // 排序 1表示升序 -1表示降序


// $or      或
db.users.find({
    $or: [
        { username: "老王" },
        { age: 1000 }
    ]
}, {
    username: 1,
    age: 1,
    _id: 0
})


db.users.find({
    $or: [
        {
            username: "老王"
        },
        {
            age: {
                $lte: 30
            }
        }
    ]
}, {
    username: 1,
    age: 1,
    _id: 0
})

// 模糊查询 包含字母i的
db.users.find({
    username: /i/
}, {
    username: 1,
    _id: 0
})

// 模糊查下 以什么开头的
db.users.find({
    username: /^m/
}, {
    username: 1,
    _id: 0
})

// 模糊查下 以什么结束
db.users.find({
    username: /o$/
}, {
    username: 1,
    _id: 0
})

// 精准查下 等于什么的
db.users.find({
    username: /^yuyu$/
}, {
    username: 1,
    _id: 0
})

// 包含什么的
db.users.find({
    username: new RegExp("u")
}, {
    username: 1,
    _id: 0
})


// 电影的查询

// db.movies.find({query},{field}) query 查询条件 field 查询字段

db.movies.find({}, { title: 1, year: 1 })
db.movies.find({}, { title: 1, year: 1, _id: 0 })

// 对象查询需要点出去从外到内
db.movies.find({}, { title: 1, 'rating.average': 1, _id: 0 })

// 区间查找
db.movies.find({
    year: { $gte: "1994", $lte: "1997" }
}, {
    title: 1, year: 1, _id: 0
})

db.movies.find({ "rating.average": { $gte: 9.3 } }, { year: 1, title: 1, _id: 0, "rating.average": 1 })

db.movies.find({ "rating.average": { $gte: 9.3 }, year: "1994" }, { year: 1, title: 1, _id: 0, "rating.average": 1 })

db.movies.find({}, { year: 1, title: 1, _id: 0, "rating.average": 1 }).sort({ year: -1, "reting.acerage": 1 })


// 限制条数     limit
db.movies.find({}, { title: 1, year: 1, _id: 0 }).limit(10)

// 跳过 skip    分页比较多
db.movies.find({}, { title: 1, year: 1, _id: 0 }).skip(5)
db.movies.find({}, { title: 1, year: 1, _id: 0 }).skip(5).limit(10)

// 长度 条数 count 所有集合数据 size 满足条件的集合数据
db.movies.find({}, { title: 1, year: 1, _id: 0 }).size()    // 满足条件的长度
db.movies.find({}, { title: 1, year: 1, _id: 0 }).count()   // 总长度

// 最大值 最小值

db.movies.find({}, { year: 1, title: 1, _id: 0 }).sort({ year: -1 }).limit(1)  // 最大值


// $or  或
db.movies.find({ $or: [{ year: "1994" }, { year: "1997" }] }, { year: 1, title: 1, _id: 0 })

// 查询有没有这个字段 $exists
db.movies.find({ year: { $exists: true } }, { year: 1, title: 1, _id: 0 })

// 包含 $in
db.movies.find({ genres: { $in: ['犯罪'] } }, { year: 1, title: 1, _id: 0 })

db.movies.find({ year: { $in: ['1997', '1994', '1669'] } }, { year: 1, title: 1, _id: 0 })

// 不包含 $nin
db.movies.find({ year: { $nin: ['犯罪'] } }, { year: 1, title: 1, _id: 0 })

// $inc 累计计算